import numpy as np
import pandas as pd
#生成对象
a=pd.Series([1,3,5,np.nan,6,8])
#日期索引生成dataframe
dates=pd.date_range('20130101',periods=6)
df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
#Series字典对象生成DataFrame
df2=pd.DataFrame({
                'A':1.,
                'B':pd.Timestamp('20130102'),
                'C':pd.Series(1, index=list(range(4)), dtype='float32'),
                'D':np.array([3]*4,dtype='int'),
                'E':pd.Categorical(["test","train","test","train"]),
                'F':'foo'
})
#查看头部尾部数据
df.head(4)
df.tail(3)
#显示索引
df.index
#显示列
df.columns
#转变为numpy
df.to_numpy()
#显示统计摘要
df.describe()
#转置
df.T
#按轴排序axis=1为横，0为竖，false为倒
df.sort_index(axis=1,ascending=False)
#按值排序
df.sort_values(by='B',ascending=False)
#获取数据，选择单列
df.A
df['A']

df[0:3]
df['20130101':'20130103']
#按标签提取一行df.loc['2013-01-01']
df.loc[dates[0]]
df2.loc[1]
#按标签选择多列/行/切片
df2.loc[:,['A','B']]
df2.loc[[1,2],:]
df.loc['20130102',['A','B']]
df.loc['20130102','A']
#按整数位置，第四行
df.iloc[3]
df.iloc[3:5,0:2]
df.iloc[[1,2,4],[0,2]]
df.iat[1,1]

#布尔运算,A列大于0
df[df.A>0]
df[df>0]
df3=df.copy()
#筛选
df3['E']=['one','one','two','three','four','three']
df3[df3['E'].isin(['two','four'])]
df3[(df3['A']>0)&(df3['A']<1)]
#用索引自动对齐
s1=pd.Series([1,2,3,4,5,6],index=pd.date_range('20201223',periods=6))
#按标签赋值
df.at[dates[0],'A']=0
#按位置赋值
df.iat[0,1]=0
#按Numpy数组赋值
df.loc[:,'E']=np.array([5]*len(df))
#条件赋值
df4=df.copy()
df4[df4>0]='-df2'
#缺失值

df5=df.reindex(index=dates[0:4],columns=list(df.columns)+['F'])
df5.loc[dates[0]:dates[1],'F']=1
#删除含缺值的行
df5.dropna(how='any')
#填充缺失值
df5.fillna(value=5)
#提取nan值的布尔掩码
pd.isna(df5)

'统计'
#在运算时一般排除缺失值
df.mean()
#求行均值
df.mean(0)
#求列均值
df.mean(1)








